Field of the Invention
The present invention relates in general computing systems, and more particularly to, various embodiments for providing a framework for of Quality of Service (QoS) characteristics in an embedded computing infrastructure built within a globally-distributed multi-tenant object storage namespace.
Description of the Related Art
Today with modern technology, large volumes of data are storable on disk drives; these drives can exist as a solo entity, or as part of a broader make up within a larger storage environment. Traditionally, object storage may be used for backup, archival, data mining, search, analytics, and other purposes. In some cases, object storage is utilized as a low-cost storage tier in a multiple-tier storage hierarchy. Unstructured/raw data resides in object storage for a much longer tenure when compared with traditional computing storage infrastructure.
In a traditional object storage environment, QoS implementations in a multi-tenant environment may be framed on a number of bases, including storage disk classification, network bandwidth utilization, and a number of concurrent requests (e.g., GET, PUT, etc.), as well as maximum object size, support for meta-data operations, and the like. However, with the advent of new embedded computing infrastructures, featuring built-in object storage architectures, multiple QoS concerns may arise. For example, as currently no separation exists at the object layer, and each tenant belonging to a particular object storage ecosystem has equal rights towards the computation resources, the disparity between various users, the needs of those users, and the priorities needing to be placed on various user processes over others lend to QoS characteristics not being fully integrated into the services provided to individual tenants. For example, currently, each tenant shares the same hardware resources in a particular storage node of a distributed storage environment. Currently, all users are treated equally in object storage environments; yet users, resource needs, and priorities may be vastly different, and furthermore, may change over time.
Consider the following example, in view of FIG. 1, which depicts traditional object storage architecture 100 in the prior art. Object storage architecture 100 includes two entities 108, 110/node groups 108, 110. The nodes in node groups 108, 110 designated as proxy nodes are utilized as distributed load handling/request handling nodes into the namespace. The nodes designated as storage nodes are responsible for writing into the storage devices/storage subsystems.
User 102 and 104 direct computing activities (e.g., writing data) towards the load balancer 106 component. The computing activities may include input/output (I/O) operations to storage units, where the load balancer 106 assists in determining which of the proxy nodes to be used depending upon the load currently handled by each of the proxy nodes. Both user 102 and 104 essentially are given unlimited access to the resources in the node groups 108, 110, as directed by the load balancing component 106.
Object storage architecture 100 generally serves as a storage unit 100/storage repository 100. Were architecture 100 utilized for data analysis, (e.g., extraction of meaningful information from raw data) of the data residing in the associated storage units, an additional client or associated computing component would be necessitated to perform such analysis. In other words, data 112 for further processing or analysis typically must be pulled from storage nodes to other computing nodes for such processing.
While efforts are being made to consolidate processing and computation functionality, the current object storage framework is inadequate to address the differing tenants (users) with differing priorities, resource needs, and computing processes that may be associated to each. Compute infrastructure embedded object storage architectures are built, instead, for single tenancy or for a single user, and lack an ability to address the aforementioned challenges of execution of computation algorithms among differing tenancies and/or users. A need exists for a mechanism whereby the individual needs of particular tenants are adequately addressed within an object storage framework, such that available scarce resources are appropriately allocated to tasks having the greatest priority, as well as tailored to customer/client QoS opted plans, and geared to improve the overall performance of the computing architecture, while also serving the needs of the tenant/user in the best possible manner.